/*************************************************************************
 * File Name:    D.cc
 * Author:       zero91
 * Mail:         jianzhang9102@gmail.com
 * Created Time: Thu 17 Oct 2013 11:53:05 AM CST
 * 
 * Description:  http://codeforces.com/contest/356/problem/D
 ************************************************************************/
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <deque>
#include <map>
#include <set>
#include <functional>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <cmath>

using namespace std;

#define MAXN 100000

bool cmp_first(const pair<int, pair<int, bool> > &a, const pair<int, pair<int, bool> > &b) { return a.first > b.first; }

int
main(int argc, char *argv[])
{
    std::ios_base::sync_with_stdio(false);

    int n, s, t;
    int bag_capacity;

    vector<pair<int, pair<int, bool> > > bags;
    vector<vector<int> > ans;
    unsigned int dp[MAXN >> 5], tdp[MAXN >> 5];
    int next[MAXN];

    while (scanf("%d %d", &n, &s) != EOF) {
        bags.clear();
        for (int i = 0; i < n; ++i) {
            scanf("%d", &t);
            bags.push_back(make_pair(t, make_pair(i + 1, false)));
        }
        sort(bags.begin(), bags.end(), cmp_first);

        ans.clear();
        ans.resize(n + 1);

        if (bags[0].first == s) {
            for (size_t i = 0; i < bags.size() - 1; ++i) {
                ans[bags[i].second.first].push_back(bags[i].first - bags[i + 1].first);
                ans[bags[i].second.first].push_back(1);
                ans[bags[i].second.first].push_back(bags[i + 1].second.first);
            }
            ans[bags[bags.size() - 1].second.first].push_back(bags[bags.size() - 1].first);
            ans[bags[bags.size() - 1].second.first].push_back(0);
        } else if (bags[0].first < s) {
            bag_capacity = s - bags[0].first;
            int arr_size = (bag_capacity >> 5) + 1;

            memset(dp, 0, sizeof(dp));
            memset(next, -1, sizeof(next));

            int arr_id, bit_id;

            dp[0] |= 1;
            for (size_t i = 1; i < bags.size(); ++i) {
                memset(tdp, 0, sizeof(tdp));
                arr_id = (bags[i].first >> 5);
                bit_id = (bags[i].first & 31);

                for (int j = 0; j + arr_id < arr_size; ++j) {
                    tdp[j + arr_id] |= (dp[j] << bit_id);
                    if (j + arr_id + 1 < arr_size && bit_id != 0) {
                        tdp[j + arr_id + 1] |= (dp[j] >> (32 - bit_id));
                    }
                }
                for (int j = 0; j < arr_size; ++j) {
                    if ((tdp[j] | dp[j]) != dp[j]) {
                        for (int k = 0; k < 32; ++k) {
                            if ((tdp[j] & (1 << k)) != 0 && (dp[j] & (1 << k)) == 0) {
                                next[(j << 5) + k] = i;
                            }
                        }
                        dp[j] |= tdp[j];
                    }
                }
            }

            if ((dp[bag_capacity >> 5] & (1 << (bag_capacity & 31))) == 0) {
                printf("-1\n");
                continue;
            }

            bags[0].second.second = true;
            for (int j = bag_capacity; j != 0; j -= bags[next[j]].first) {
                bags[next[j]].second.second = true;
            }
            for (size_t i = 0; i < bags.size() - 1; ++i) {
                if (bags[i + 1].second.second) {
                    ans[bags[i].second.first].push_back(bags[i].first);
                    ans[bags[i].second.first].push_back(0);
                } else {
                    ans[bags[i].second.first].push_back(bags[i].first - bags[i + 1].first);
                    ans[bags[i].second.first].push_back(1);
                    ans[bags[i].second.first].push_back(bags[i + 1].second.first);
                }
            }
            ans[bags[bags.size() - 1].second.first].push_back(bags[bags.size() - 1].first);
            ans[bags[bags.size() - 1].second.first].push_back(0);
        } else {
            printf("-1\n");
            continue;
        }

        for (int i = 1; i <= n; ++i) {
            for (size_t j = 0; j < ans[i].size(); ++j) {
                printf("%s%d", j == 0 ? "" : " ", ans[i][j]);
            }
            printf("\n");
        }
    }
    return 0;
}
